数据拆分

数据拆分分简单拆分和根据指定变量的值拆分等不同情况。[大谦Excel,dqexcel点com]

简单拆分-垂直

【问题描述】

将一个DataFrame的数据在垂直方向简单拆分到不同的文件。

【示例4-1】

本例使用的Excel文件的完整路径为“D:/Samples/ch04/01 数据拆分/简单拆分-垂直/学生成绩.xlsx”。该文件打开后如图4-1所示,是一些学生的语文、数学和英语考试成绩。要求将工作表中的数据在垂直方向上,从上到下每次获取5行数据并保存到一个Excel文件。文件保存在原始数据文件的相同路径下。

Document Image

图4-1 学生成绩表

  • 编写下面的代码:
code.python
import pandas as pd
# 读取Excel文件
file_path = "D:/Samples/ch04/01 数据拆分/简单拆分-垂直/学生成绩.xlsx"
data = pd.read_excel(file_path, sheet_name=0, engine="openpyxl")
# 每5行数据保存为一个新的工作簿文件
num_rows_per_file = 5
num_files = (len(data) - 1) // num_rows_per_file + 1
for i in range(num_files):
    start_index = i * num_rows_per_file
    end_index = min(start_index + num_rows_per_file, len(data))
    file_name = "学生成绩_{}.xlsx".format(i+1)
    file_path = "D:/Samples/ch04/01 数据拆分/简单拆分-垂直/" + file_name
    df = data.iloc[start_index:end_index]
    df.to_excel(file_path, sheet_name="Sheet1")

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的垂向拆分。可在原始数据文件的相同路径下找到新建的Excel文件。

简单拆分-水平

【问题描述】

将一个DataFrame的数据在水平方向简单拆分到不同的文件。

【示例4-2】

本例使用与示例4-1相同的数据。要求将工作表中的每列数据拆分到一个新的Excel文件。

  • 编写下面的代码:
code.python
import pandas as pd
# 读取Excel文件数据
data = pd.read_excel('D:/Samples/ch04/01 数据拆分/简单拆分-水平/学生成绩.xlsx', engine='openpyxl')
# 将第1列数据设置为行索引
data.set_index('姓名', inplace=True)
# 遍历每一列数据并保存到新文件中
for col in data.columns:
    # 构造新文件名
    filename = '学生成绩_{}.xlsx'.format(col)
    # 保存数据到新文件
data[[col]].to_excel('D:/Samples/ch04/01 数据拆分/简单拆分-水平/' + filename, engine='openpyxl')

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的水平拆分。可在原始数据文件的相同路径下找到新建的Excel文件。

根据变量的值拆分到不同工作簿

【问题描述】

数据拆分还有一种常见的情况是根据DataFrame中一个列的不同取值对数据进行拆分。

【示例4-3】

本例使用的Excel文件的完整路径为“D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/各科室人员.xlsx”。该文件打开后如图4-2所示,是不同科室员工的个人资料信息。要求将每个科室的人员资料单独拆分到一个Excel文件。

Document Image

图4-2 不同科室员工的资料

  • 编写下面的代码:
code.python
import pandas as pd
# 读取Excel文件
file_path = 'D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/各科室人员.xlsx'
df = pd.read_excel(file_path, engine='openpyxl', sheet_name=0, index_col=0)
# 拆分数据并保存到不同的Excel文件
grouped = df.groupby('科室')
for group_name, group_data in grouped:
    save_path = f'D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/{group_name}.xlsx'
group_data.to_excel(save_path, engine='openpyxl')

打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的拆分。可在原始数据文件的相同路径下找到新建的Excel文件。

【知识点扩展】

本例用到了DataFrame对象的groupby方法。该方法常用于对数据进行分组统计,在这里根据科室对数据分组汇总,并分别保存到不同的Excel文件。